home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / dev / misc / gms_dev.lha / GMSDev / Source / C / Blitter / MoveCircle.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-09-20  |  1.6 KB  |  71 lines

  1. /* Dice: 1> dcc -l0 -mD dpk.o tags.o MoveCircle.c -o MoveCircle
  2. */
  3.  
  4. #include <proto/dpkernel.h>
  5.  
  6. BYTE *ProgName      = "Circles";
  7. BYTE *ProgAuthor    = "Paul Manias";
  8. BYTE *ProgDate      = "July 1998";
  9. BYTE *ProgCopyright = "DreamWorld Productions (c) 1998.  Freely distributable.";
  10. BYTE *ProgShort     = "Move a circle around the screen.";
  11.  
  12. LONG Palette[] = {
  13.   ID_PALETTE, 2,
  14.   0x000000,0xff0000,
  15. };
  16.  
  17. void main(void)
  18. {
  19.   struct GScreen *Screen;
  20.   struct JoyData *JoyData;
  21.   WORD   x, y, radius, fill;
  22.  
  23.   if (Screen = InitTags(NULL,
  24.       TAGS_SCREEN, NULL,
  25.       GSA_Attrib,  SCR_DBLBUFFER,
  26.         GSA_BitmapTags, NULL,
  27.         BMA_Palette,    Palette,
  28.         TAGEND,         NULL,
  29.       TAGEND)) {
  30.  
  31.      if (JoyData = Init(Get(ID_JOYDATA),NULL)) {
  32.  
  33.         Display(Screen);
  34.  
  35.         /*** Set the circle's parameters ***/
  36.  
  37.         x      = Screen->Width/2;
  38.         y      = Screen->Height/2;
  39.         radius = FastRandom(Screen->Width/2);
  40.         fill   = FastRandom(2);
  41.         SetRGBPen(Screen->Bitmap,0xff0000);
  42.  
  43.         /*** Main loop ***/
  44.  
  45.         do {
  46.            Query(JoyData);
  47.  
  48.            if (JoyData->Buttons & JD_LMB) {
  49.               radius += (JoyData->XChange + JoyData->YChange);
  50.            }
  51.            else {
  52.               x += JoyData->XChange;
  53.               y += JoyData->YChange;
  54.            }
  55.  
  56.            if (radius > 50) radius = 50;
  57.            if (radius < 1) radius = 1;
  58.  
  59.            Clear(Screen->Bitmap);
  60.            PenCircle(Screen->Bitmap,x,y,radius,fill);
  61.            WaitVBL();
  62.            SwapBuffers(Screen);
  63.         } while (!(JoyData->Buttons & JD_RMB));
  64.  
  65.      Free(JoyData);
  66.      }
  67.   Free(Screen);
  68.   }
  69. }
  70.  
  71.